package org.hank.compose_yyzs.db.dao

import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import androidx.room.Update
import dagger.Provides
import dagger.hilt.EntryPoint
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import org.hank.compose_yyzs.bean.WifiBean

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 *@auth: Hank
 *邮箱: cs16xiaoc1@163.com
 *创建时间: 2023/8/11 10:31
 *描述:
 */
@Dao
interface WifiDao {
    @get:Query("select * from WifiBean")
    val allWifiInfo: Flow<List<WifiBean>?>

    @Delete
    suspend fun delWifiInfo(wifiBean: WifiBean?): Int

    @Insert
    suspend fun insertWifiInfo(vararg wifiBean: WifiBean?): LongArray?

    @Update
    suspend fun editWifiInfo(vararg wifiBean: WifiBean?): Int

    @get:Query("select * from WifiBean WHERE isCurrentWifi = 1")
    val currentWifiInfo: WifiBean?

    @Query("select id from WifiBean WHERE wifiName = :wifiName")
    suspend fun getIdByWifiName(wifiName:String) : Int

    @Query("UPDATE WifiBean SET isCurrentWifi = 0 WHERE isCurrentWifi = 1")
    suspend fun updateAllToFalse():Int

    @Query("SELECT COUNT(*) FROM WifiBean WHERE wifiName = :wifiName AND wifiAddress = :wifiAddress")
    suspend fun isHistoryWifi(wifiName:String,wifiAddress:String):Boolean

    @Query("delete from WifiBean")
    suspend fun delAll(): Int

}